GPUOpen-LibrariesAndSDKs / FidelityFX-SDK

The main repository for the FidelityFX SDK.
Other
835 stars 80 forks source link

Null exception Dx12Commands* get(ID3D12CommandQueue* pQueue, const wchar_t* name) in the unreal plugin #74

Open namidaka opened 2 months ago

namidaka commented 2 months ago
    Dx12Commands* get(ID3D12CommandQueue* pQueue, const wchar_t* name)
    {
        D3D12_COMMAND_QUEUE_DESC queueDesc = pQueue->GetDesc();

        EnterCriticalSection(&criticalSection_);

        Dx12Commands* pCommands = nullptr;
        for (size_t idx = 0; idx < Capacity && (pCommands == nullptr); idx++)
        {
            auto& cmds = buffer[queueDesc.Type][idx];
            if (cmds.verify(pQueue) && cmds.available())
            {
                pCommands = &cmds;
            }
        }

        FFX_ASSERT(pCommands);

        pCommands->occupy(pQueue, name);
        LeaveCriticalSection(&criticalSection_);

        return pCommands;
    }
};

pCommands can somehow be null. It happened once to one of our QA

Here is the stack trace

Dx12CommandPool<T>::get (fidelityfx-sdk\src\backends\dx12\FrameInterpolationSwapchain\FrameInterpolationSwapchainDX12_Helpers.h:240)

FrameInterpolationSwapChainDX12::presentWithUiComposition (fidelityfx-sdk\src\backends\dx12\FrameInterpolationSwapchain\FrameInterpolationSwapchainDX12.cpp:1041)

FrameInterpolationSwapChainDX12::Present (fidelityfx-sdk\src\backends\dx12\FrameInterpolationSwapchain\FrameInterpolationSwapchainDX12.cpp:1223)

FD3D12Viewport::PresentChecked

FD3D12Viewport::Present

FD3D12CommandContextBase::RHIEndDrawingViewport

FRHICommand<T>::ExecuteAndDestruct

FRHICommandListBase::Execute

operator==

TGraphTask<T>::ExecuteTask

FNamedTaskThread::ProcessTasksNamedThread

FNamedTaskThread::ProcessTasksUntilQuit

FRHIThread::Run

FRunnableThreadWin::Run

FRunnableThreadWin::GuardedRun

Called from
KERNEL32
<unknown>