Reputation: 18218
I'm trying to compile and run the code published on https://github.com/boksajak/referencePT of the reference path tracer described in Raytracing Gems II. It is based on https://github.com/acmarrs/IntroToDXR. Unfortunately, while the latter is working, the former is not. The call d3d.device->CreateStateObject(&pipelineDesc, IID_PPV_ARGS(&dxr.rtpso));
in CreatePipelineStateObject
(see https://github.com/boksajak/referencePT/blob/2cb5fb986ab8734bcaf52c048f8b6b5895e9ce5f/src/Graphics.cpp#L1468) is return E_INVALIDARG
? From the output window, I can see that two exceptions are thrown:
Exception thrown at 0x00007FFC5860CF19 in ReferencePT_d.exe: Microsoft C++ exception: _com_error at memory location 0x0000007C766FD798.
Exception thrown at 0x00007FFC5860CF19 in ReferencePT_d.exe: Microsoft C++ exception: _com_error at memory location 0x0000007C766FD7B8.
The suboject descriptions seem totally fine to me. I have no idea what the actual cause is. Do I have any possibility to get a more detailed error description?
In the CreateDevice
function, the debug layer is enabled. I've even tried to enable further validation by using the following code instead:
void CreateDevice(D3D12Global &d3d)
{
uint32_t dxgiFactoryFlags = 0;
#if defined(_DEBUG)
// Enable the D3D12 debug layer.
{
if (SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&d3d.debugController))))
{
d3d.debugController->EnableDebugLayer();
d3d.debugController->SetEnableGPUBasedValidation(TRUE);
}
dxgiFactoryFlags |= DXGI_CREATE_FACTORY_DEBUG;
ComPtr<IDXGIInfoQueue> infoQueue;
if (SUCCEEDED(DXGIGetDebugInterface1(0, IID_PPV_ARGS(infoQueue.ReleaseAndGetAddressOf()))))
{
infoQueue->SetBreakOnSeverity(DXGI_DEBUG_ALL, DXGI_INFO_QUEUE_MESSAGE_SEVERITY_ERROR, true);
infoQueue->SetBreakOnSeverity(DXGI_DEBUG_ALL, DXGI_INFO_QUEUE_MESSAGE_SEVERITY_CORRUPTION, true);
}
}
#endif
// Create a DXGI Factory
HRESULT hr = CreateDXGIFactory2(dxgiFactoryFlags, IID_PPV_ARGS(&d3d.factory));
Utils::Validate(hr, L"Error: failed to create DXGI factory!");
...
However, I still don't get a more verbose output.
Upvotes: 1
Views: 150
Reputation: 51
Did you try enabling the C define for 16 bit types on the call to the pixel shader compile?
LPCWSTR cDefines[] = { L"-enable-16bit-types" };
Upvotes: 1