Unknown error when using denoiser on small buffers
Hi, I noticed that an unknown error is raised when using the new denoiser feature on buffers of size 64 or less. [code] Context = optix::Context::create() [/code] [code] 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"); DenoiserStage->declareVariable("input_buffer")->set(InputBuffer); DenoiserStage->declareVariable("output_buffer")->set(OutputBuffer); optix::CommandList CmdList = Context->createCommandList(); CmdList->appendPostprocessingStage(DenoiserStage, Width, Height); CmdList->finalize(); void* InputBufferData = InputBuffer->map(); std::memcpy(InputBufferData, NoisyData.data(), 4 * Width * Height * sizeof(float)); InputBuffer->unmap(); CmdList->execute();[/code]
Hi,

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");
DenoiserStage->declareVariable("input_buffer")->set(InputBuffer);
DenoiserStage->declareVariable("output_buffer")->set(OutputBuffer);

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

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

CmdList->execute();

#1
Posted 01/04/2018 11:43 AM   
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?
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?

#2
Posted 01/04/2018 04:06 PM   
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.
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.

#3
Posted 01/04/2018 04:56 PM   
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.
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.

#4
Posted 01/04/2018 05:01 PM   
"Unknown error (Details: Function \"_rtCommandListExecute\" caught exception: Failed to launch DLDenoiser post-processing stage. DLDenoiser run method failed.)"
"Unknown error (Details: Function \"_rtCommandListExecute\" caught exception: Failed to launch DLDenoiser post-processing stage. DLDenoiser run method failed.)"

#5
Posted 01/04/2018 05:14 PM   
Scroll To Top

Add Reply