Arnold Render Support in Blender

Using this callback I would assume would still work:

def display_callback(x, y, width, height, buffer, data):
            _x = x - xoff
            _y = y - yoff

            if buffer:
                try:
                    result = _htiles.pop((_x, _y), None)
                    if result is None:
                        result = engine.begin_result(_x, _y, width, height)
                    _buffer = ctypes.cast(buffer, ctypes.POINTER(ctypes.c_float))
                    rect = numpy.ctypeslib.as_array(_buffer, shape=(width * height, 4))
                    # TODO: gamma correction. need??? kick is darker
                    # set 1/2.2 the driver_display node by default
                    #rect **= 2.2
                    result.layers[0].passes[0].rect = rect
                    engine.end_result(result)
                finally:
                    arnold.AiFree(buffer)
            else:
                result = engine.begin_result(_x, _y, width, height)
                # TODO: sometimes highlighted tiles become empty
                engine.update_result(result)
                _htiles[(_x, _y)] = result

            if engine.test_break():
                arnold.AiRenderAbort()
                while _htiles:
                    (_x, _y), result = _htiles.popitem()
                    engine.end_result(result, True)

            mem = session["mem"] = arnold.AiMsgUtilGetUsedMemory() / 1048576  # 1024*1024
            peak = session["peak"] = max(session["peak"], mem)
            engine.update_memory_stats(mem, peak)