У меня есть список команд с командой ExecuteIndirect. Если для параметра MaxCommandCount
этой команды заданы большие значения (10000), это каким-то образом замедляет список команд, несмотря на то, что значение счетчика в pCountBuffer
равно нулю.
Функция рендеринга:
void render() {
uint curr_index = swapChain->GetCurrentBufferIndex();
// Flush command list
if (fence->GetCompletedValue() < signal_value[curr_index]) {
HANDLE fence_event = nullptr;
fence->SetEventOnCompletion(signal_value[curr_index], fence_event);
WaitForSingleObject(fence_event, INFINITE);
}
// Execute command list
signal_value[curr_index]++;
command_queue->ExecuteCommandLists(1, &command_list);
command_queue->Signal(fence, signal_value[curr_index]);
// Present the frame
swapChain->Present();
}
Я отладил свое приложение в Microsoft PIX, и оно показало, что время кадра составляет 0,5 мс. Я измерил время ожидания завершения списка команд, и я получил ~ 10 мс.
Что может вызвать такое поведение? Я использую Radeon RX 570 GPU.