DirectX12 ExecuteIndirect высокий MaxCommandCount - PullRequest
0 голосов
/ 11 июля 2019

У меня есть список команд с командой 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.

...