Skip to content

Commit 0fe6234

Browse files
committed
D3D12MeshletRender: cleaned up
This seems relatively decent, besides the loop for vertex resource barriers Fixed a bug where I set the wrong end state
1 parent 2da83ab commit 0fe6234

File tree

2 files changed

+14
-41
lines changed

2 files changed

+14
-41
lines changed

Samples/Desktop/D3D12MeshShaders/src/MeshletRender/D3D12MeshletRender.cpp

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -184,14 +184,12 @@ void D3D12MeshletRender::LoadPipeline()
184184
depthOptimizedClearValue.DepthStencil.Stencil = 0;
185185

186186
const CD3DX12_HEAP_PROPERTIES depthStencilHeapProps(D3D12_HEAP_TYPE_DEFAULT);
187-
const CD3DX12_RESOURCE_DESC depthStencilResDesc = CD3DX12_RESOURCE_DESC::Tex2D(DXGI_FORMAT_D32_FLOAT, m_width, m_height, 1, 0, 1, 0, D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL);
187+
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);
188188

189189
ThrowIfFailed(m_device->CreateCommittedResource(
190-
//&CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT),
191190
&depthStencilHeapProps,
192191
D3D12_HEAP_FLAG_NONE,
193-
//&CD3DX12_RESOURCE_DESC::Tex2D(DXGI_FORMAT_D32_FLOAT, m_width, m_height, 1, 0, 1, 0, D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL),
194-
&depthStencilResDesc,
192+
&depthStencilTextureDesc,
195193
D3D12_RESOURCE_STATE_DEPTH_WRITE,
196194
&depthOptimizedClearValue,
197195
IID_PPV_ARGS(&m_depthStencil)
@@ -207,14 +205,12 @@ void D3D12MeshletRender::LoadPipeline()
207205
const UINT64 constantBufferSize = sizeof(SceneConstantBuffer) * FrameCount;
208206

209207
const CD3DX12_HEAP_PROPERTIES constantBufferHeapProps(D3D12_HEAP_TYPE_UPLOAD);
210-
const CD3DX12_RESOURCE_DESC constantBufferResDesc = CD3DX12_RESOURCE_DESC::Buffer(constantBufferSize);
208+
const CD3DX12_RESOURCE_DESC constantBufferDesc = CD3DX12_RESOURCE_DESC::Buffer(constantBufferSize);
211209

212210
ThrowIfFailed(m_device->CreateCommittedResource(
213-
//&CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
214211
&constantBufferHeapProps,
215212
D3D12_HEAP_FLAG_NONE,
216-
//&CD3DX12_RESOURCE_DESC::Buffer(constantBufferSize),
217-
&constantBufferResDesc,
213+
&constantBufferDesc,
218214
D3D12_RESOURCE_STATE_GENERIC_READ,
219215
nullptr,
220216
IID_PPV_ARGS(&m_constantBuffer)));
@@ -397,7 +393,6 @@ void D3D12MeshletRender::PopulateCommandList()
397393

398394
// Indicate that the back buffer will be used as a render target.
399395
const auto toRenderTargetBarrier = CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET);
400-
//m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET));
401396
m_commandList->ResourceBarrier(1, &toRenderTargetBarrier);
402397

403398
CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart(), m_frameIndex, m_rtvDescriptorSize);
@@ -428,7 +423,6 @@ void D3D12MeshletRender::PopulateCommandList()
428423

429424
// Indicate that the back buffer will now be used to present.
430425
const auto toPresentBarrier = CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT);
431-
//m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT));
432426
m_commandList->ResourceBarrier(1, &toPresentBarrier);
433427

434428
ThrowIfFailed(m_commandList->Close());

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

Lines changed: 10 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -454,50 +454,29 @@ HRESULT Model::UploadGpuResources(ID3D12Device* device, ID3D12CommandQueue* cmdQ
454454
cmdList->CopyResource(m.VertexResources[j].Get(), vertexUploads[j].Get());
455455
const auto barrier = CD3DX12_RESOURCE_BARRIER::Transition(m.VertexResources[j].Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
456456
cmdList->ResourceBarrier(1, &barrier);
457-
//cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.VertexResources[j].Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
458457
}
459458

459+
D3D12_RESOURCE_BARRIER postCopyBarriers[6];
460+
460461
cmdList->CopyResource(m.IndexResource.Get(), indexUpload.Get());
461-
{
462-
const auto barrier = CD3DX12_RESOURCE_BARRIER::Transition(m.IndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
463-
cmdList->ResourceBarrier(1, &barrier);
464-
}
465-
//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);
466463

467464
cmdList->CopyResource(m.MeshletResource.Get(), meshletUpload.Get());
468-
{
469-
const auto barrier = CD3DX12_RESOURCE_BARRIER::Transition(m.MeshletResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
470-
cmdList->ResourceBarrier(1, &barrier);
471-
}
472-
//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);
473466

474467
cmdList->CopyResource(m.CullDataResource.Get(), cullDataUpload.Get());
475-
{
476-
const auto barrier = CD3DX12_RESOURCE_BARRIER::Transition(m.CullDataResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
477-
cmdList->ResourceBarrier(1, &barrier);
478-
}
479-
//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);
480469

481470
cmdList->CopyResource(m.UniqueVertexIndexResource.Get(), uniqueVertexIndexUpload.Get());
482-
{
483-
const auto barrier = CD3DX12_RESOURCE_BARRIER::Transition(m.UniqueVertexIndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
484-
cmdList->ResourceBarrier(1, &barrier);
485-
}
486-
//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);
487472

488473
cmdList->CopyResource(m.PrimitiveIndexResource.Get(), primitiveIndexUpload.Get());
489-
{
490-
const auto barrier = CD3DX12_RESOURCE_BARRIER::Transition(m.PrimitiveIndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
491-
cmdList->ResourceBarrier(1, &barrier);
492-
}
493-
//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);
494475

495476
cmdList->CopyResource(m.MeshInfoResource.Get(), meshInfoUpload.Get());
496-
{
497-
const auto barrier = CD3DX12_RESOURCE_BARRIER::Transition(m.MeshInfoResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
498-
cmdList->ResourceBarrier(1, &barrier);
499-
}
500-
//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);
501480

502481
ThrowIfFailed(cmdList->Close());
503482

0 commit comments

Comments
 (0)