Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Stellt Methoden zum Übermitteln von Befehlslisten, Synchronisieren der Befehlslistenausführung, Instrumentieren der Befehlswarteschlange und Aktualisieren von Ressourcenkachelzuordnungen bereit.
Vererbung
Die ID3D12CommandQueue-Schnittstelle erbt von ID3D12Pageable. ID3D12CommandQueue verfügt auch über die folgenden Typen von Membern:
Methoden
Die ID3D12CommandQueue-Schnittstelle verfügt über diese Methoden.
ID3D12CommandQueue::BeginEvent Nicht dafür vorgesehen, direkt aufgerufen zu werden. Verwenden Sie die PIX-Ereignislaufzeit, um Ereignisse in eine Befehlswarteschlange einzufügen. (ID3D12CommandQueue.BeginEvent) |
ID3D12CommandQueue::CopyTileMappings Kopiert Zuordnungen aus einer reservierten Quellressource in eine reservierte Zielressource. |
ID3D12CommandQueue::EndEvent Nicht dafür vorgesehen, direkt aufgerufen zu werden. Verwenden Sie die PIX-Ereignislaufzeit, um Ereignisse in eine Befehlswarteschlange einzufügen. (ID3D12CommandQueue.EndEvent) |
ID3D12CommandQueue::ExecuteCommandLists Sendet ein Array von Befehlslisten zur Ausführung. |
ID3D12CommandQueue::GetClockCalibration Bei dieser Methode werden die CPU- und GPU-Zeitstempel zum selben Zeitpunkt veranschaulicht. |
ID3D12CommandQueue::GetDesc Ruft die Beschreibung der Befehlswarteschlange ab. |
ID3D12CommandQueue::GetTimestampFrequency Diese Methode wird verwendet, um die Rate zu bestimmen, mit der der GPU-Zeitstempel inkrementiert wird. |
ID3D12CommandQueue::SetMarker Nicht dafür vorgesehen, direkt aufgerufen zu werden. Verwenden Sie die PIX-Ereignislaufzeit, um Ereignisse in eine Befehlswarteschlange einzufügen. (ID3D12CommandQueue.SetMarker) |
ID3D12CommandQueue::Signal Updates einen Zaun auf einen angegebenen Wert. |
ID3D12CommandQueue::UpdateTileMappings Updates Zuordnungen von Kachelspeicherorten in reservierten Ressourcen zu Speicherspeicherorten in einem Ressourcenheap. |
ID3D12CommandQueue::Wait Stellt eine GPU-seitige Wartezeit in die Warteschlange und gibt sofort zurück. Bei einer GPU-seitigen Wartezeit wartet die GPU, bis der angegebene Zaun den angegebenen Wert erreicht oder überschreitet. |
Hinweise
Verwenden Sie ID3D12Device::CreateCommandQueue , um ein Befehlswarteschlangenobjekt zu erstellen.
Beispiele
Im D3D12nBodyGravity-Beispiel wird ID3D12CommandQueue wie folgt verwendet:
Headerdateideklarationen.
// Compute objects.
ComPtr<ID3D12CommandAllocator> m_computeAllocator[ThreadCount];
ComPtr<ID3D12CommandQueue> m_computeCommandQueue[ThreadCount];
ComPtr<ID3D12GraphicsCommandList> m_computeCommandList[ThreadCount];
Asynchroner Computethread.
DWORD D3D12nBodyGravity::AsyncComputeThreadProc(int threadIndex)
{
ID3D12CommandQueue* pCommandQueue = m_computeCommandQueue[threadIndex].Get();
ID3D12CommandAllocator* pCommandAllocator = m_computeAllocator[threadIndex].Get();
ID3D12GraphicsCommandList* pCommandList = m_computeCommandList[threadIndex].Get();
ID3D12Fence* pFence = m_threadFences[threadIndex].Get();
while (0 == InterlockedGetValue(&m_terminating))
{
// Run the particle simulation.
Simulate(threadIndex);
// Close and execute the command list.
ThrowIfFailed(pCommandList->Close());
ID3D12CommandList* ppCommandLists[] = { pCommandList };
pCommandQueue->ExecuteCommandLists(1, ppCommandLists);
// Wait for the compute shader to complete the simulation.
UINT64 threadFenceValue = InterlockedIncrement(&m_threadFenceValues[threadIndex]);
ThrowIfFailed(pCommandQueue->Signal(pFence, threadFenceValue));
ThrowIfFailed(pFence->SetEventOnCompletion(threadFenceValue, m_threadFenceEvents[threadIndex]));
WaitForSingleObject(m_threadFenceEvents[threadIndex], INFINITE);
// Wait for the render thread to be done with the SRV so that
// the next frame in the simulation can run.
UINT64 renderContextFenceValue = InterlockedGetValue(&m_renderContextFenceValues[threadIndex]);
if (m_renderContextFence->GetCompletedValue() < renderContextFenceValue)
{
ThrowIfFailed(pCommandQueue->Wait(m_renderContextFence.Get(), renderContextFenceValue));
InterlockedExchange(&m_renderContextFenceValues[threadIndex], 0);
}
// Swap the indices to the SRV and UAV.
m_srvIndex[threadIndex] = 1 - m_srvIndex[threadIndex];
// Prepare for the next frame.
ThrowIfFailed(pCommandAllocator->Reset());
ThrowIfFailed(pCommandList->Reset(pCommandAllocator, m_computeState.Get()));
}
return 0;
}
Weitere Informationen finden Sie im Beispielcode in der D3D12-Referenz.
Anforderungen
Zielplattform | Windows |
Kopfzeile | d3d12.h |