WEAK int copy_to_host_already_locked(void *user_context, struct halide_buffer_t *buf) { if (!buf->device_dirty()) { return 0; // my, that was easy } debug(user_context) << "copy_to_host_already_locked " << buf << " dev_dirty is true\n"; const halide_device_interface_t *interface = buf->device_interface; if (buf->host_dirty()) { debug(user_context) << "copy_to_host_already_locked " << buf << " dev_dirty and host_dirty are true\n"; return halide_error_code_copy_to_host_failed; } if (interface == NULL) { debug(user_context) << "copy_to_host_already_locked " << buf << " interface is NULL\n"; return halide_error_code_no_device_interface; } int result = interface->copy_to_host(user_context, buf); if (result != 0) { debug(user_context) << "copy_to_host_already_locked " << buf << " device copy_to_host returned an error\n"; return halide_error_code_copy_to_host_failed; } buf->set_device_dirty(false); halide_msan_annotate_buffer_is_initialized(user_context, buf); return result; }
WEAK void halide_msan_annotate_buffer_is_initialized_as_destructor(void *user_context, void *b) { return halide_msan_annotate_buffer_is_initialized(user_context, (buffer_t *)b); }