[Bf-cycles] bug with multi device buffers

Mohamed Sakr 3dsakr at gmail.com
Mon May 23 01:53:20 CEST 2016


I'm trying to solve a bug here, happens only with multi device. "2 CUDA
after a long debugging, here are the cases:

1- when session and device background == true:
this renders fine, found that each tile buffer = the device buffer "here
the device is CUDA" , it gets device and data pointers correctly.

2- when session and device.background == false:
this is the case in Blender, here it draws from OpenGL buffer directly, and
it doesn't touch underlying multidevice buffer.

3- the problem, session background == false, device background == true:
here it uses the actual code of multi device buffers!, I thought the CUDA
buffers are somehow wrong, so I disabled this to test:

/* in case of a permanent buffer, return it, otherwise we will allocate
* a new temporary buffer */
if(!(params.background && params.output_path.empty())) {
tile_manager.state.buffer.get_offset_stride(rtile.offset, rtile.stride);

rtile.buffer = buffers->buffer.device_pointer;
rtile.rng_state = buffers->rng_state.device_pointer;
rtile.buffers = buffers;

device->map_tile(tile_device, rtile);

return true;

and it rendered fine!, so CUDA buffers are fine.
so the whole problem is getting the buffers from multi device.

please help/advice.

Mohamed Sakr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.blender.org/pipermail/bf-cycles/attachments/20160523/c6b93a75/attachment.htm 

More information about the Bf-cycles mailing list