Unknown error when using denoiser on small buffers


I noticed that an unknown error is raised when using the new denoiser feature on buffers of size 64 or less.

Context = optix::Context::create()
optix::Buffer InputBuffer = Context->createBuffer(RT_BUFFER_INPUT, RT_FORMAT_FLOAT4, Width, Height);
optix::Buffer OutputBuffer = Context->createBuffer(RT_BUFFER_OUTPUT, RT_FORMAT_FLOAT4, Width, Height);

optix::PostprocessingStage DenoiserStage = Context->createBuiltinPostProcessingStage("DLDenoiser");

optix::CommandList CmdList = Context->createCommandList();
CmdList->appendPostprocessingStage(DenoiserStage, Width, Height);

void* InputBufferData = InputBuffer->map();
std::memcpy(InputBufferData, NoisyData.data(), 4 * Width * Height * sizeof(float));


When a single dimension is less than 64, the total number of pixels is less than 64, or the bytesize?

What is the exact error string returned?

If width and height are 64 the problem is visible.

The error is raised when calling CmdList->execute() and the RTresult is RT_ERROR_UNKNOWN. Is there an error string I can get anywhere?

My workaround right now is to make sure than the buffer is at least 128x128, fill the extra pixels with black and only read back the part I’m interested in.

You can use rtContextGetErrorString to get a descriptive message of the last error. Often times this has additional information saved from the last error encountered.

“Unknown error (Details: Function “_rtCommandListExecute” caught exception: Failed to launch DLDenoiser post-processing stage. DLDenoiser run method failed.)”