Сбой ID3D12Device :: CreateComputePipelineState (E_INVALIDARGS)

У меня необычная проблема — когда я пытаюсь создать Compute PSO, функция завершается с E_INVALIDARGS. Вероятно, это связано с отсутствием CachedPso, хотя я видел в MSDN, что Graphics PSO создается без кэшированных данных.

Так вот сам код. И Serializing Root Signature, и RS создают отчет S_OK, но CreateComputePS терпит неудачу.
Шейдер компилируется Visual Studio (версия шейдера 5.1), а затем — ReadFileToBlob.

COMPTR<ID3DBlob> pSRSignatre = nullptr;
COMPTR<ID3DBlob> pError = nullptr;
D3D12_ROOT_SIGNATURE_DESC RSDesc;
ZeroMemory(&RSDesc, sizeof(D3D12_ROOT_SIGNATURE_DESC));
RSDesc.NumParameters = 1;
RSDesc.NumStaticSamplers = 0;
RSDesc.pParameters = &rootParam;
RSDesc.pStaticSamplers = nullptr;
RSDesc.Flags = D3D12_ROOT_SIGNATURE_FLAG_NONE;

result = D3D12SerializeRootSignature(
&RSDesc,
D3D_ROOT_SIGNATURE_VERSION_1,
pSRSignatre.GetAddressOf(),
pError.GetAddressOf()
);
#ifdef DEBUG
Report(result, L"Serializaing root signature");
#endif

COMPTR<ID3D12RootSignature> pRootSign = nullptr;
result = sm_pDevice->CreateRootSignature(
0,
pSRSignatre->GetBufferPointer(),
pSRSignatre->GetBufferSize(),
IID_PPV_ARGS(pRootSign.GetAddressOf())
);
#ifdef DEBUG
Report(result, L"Root signature");
#endifCOMPTR<ID3D12PipelineState> pState = nullptr;

D3D12_COMPUTE_PIPELINE_STATE_DESC CPSDesc;
ZeroMemory(&CPSDesc, sizeof(D3D12_COMPUTE_PIPELINE_STATE_DESC));
CPSDesc.CS = m_Shader;
CPSDesc.NodeMask = 0;
CPSDesc.pRootSignature = pRootSign.Get();
CPSDesc.Flags = D3D12_PIPELINE_STATE_FLAG_NONE;

result = sm_pDevice->CreateComputePipelineState(&CPSDesc, IID_PPV_ARGS(pState.GetAddressOf()));
#ifdef DEBUG
Report(result, L"Compute PSO");
#endif

UPD: в выходном журнале есть ошибка (на самом деле не выдано исключение, просто текстовое сообщение, которое трудно заметить), которое появляется сразу после вызова CreateCompPS:
Исключение, выданное в 0x774CD928 в DirectComputeInteropLib.exe: исключение Microsoft C ++: _com_error в расположении памяти 0x001DEFF4.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector