Skip to content

Commit

Permalink
Avoid command list reset in common case of re-used command list execu…
Browse files Browse the repository at this point in the history
…tion
  • Loading branch information
jeffbloo committed Sep 20, 2023
1 parent 0991c4b commit adb2dd3
Showing 1 changed file with 18 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,24 @@ void DmlCommandRecorder::ExecuteCommandList(
_Out_ uint64_t* completionValue
)
{
if (!m_operationsRecordedInCurrentCommandList)
{
// The caller can re-use relevant resources after the next set of work to be
// flushed has completed. Its command list hasn't been executed yet, just batched.
GpuEvent gpuEvent = m_queue->GetNextCompletionEvent();
gpuEvent.fence.CopyTo(fence);
*completionValue = gpuEvent.fenceValue;

m_queue->ExecuteCommandLists(
gsl::span<ID3D12CommandList*>(reinterpret_cast<ID3D12CommandList**>(&commandList), 1));

// Fail early if something horrifying happens
ORT_THROW_IF_FAILED(m_dmlDevice->GetDeviceRemovedReason());
ORT_THROW_IF_FAILED(m_d3dDevice->GetDeviceRemovedReason());

return;
}

ORT_THROW_IF_FAILED(m_currentCommandList->Close());

if (m_operationsRecordedInCurrentCommandList)
Expand Down

0 comments on commit adb2dd3

Please sign in to comment.