| 939 | |
| 940 | template <typename TaskHeadType, bool JUST_DECLARED_ATTACHMENT> |
| 941 | void add_task(TInlineTask<TaskHeadType, JUST_DECLARED_ATTACHMENT> const & inline_task) |
| 942 | { |
| 943 | DAXA_DBG_ASSERT_TRUE_M(static_cast<bool>(inline_task.value._internal._callback), "Detected empty callback on inline task!"); |
| 944 | |
| 945 | auto task_callback = inline_task.value._internal._callback.callback; |
| 946 | |
| 947 | // Allocate and assign task callback memory |
| 948 | auto task_callback_memory = reinterpret_cast<u64*>(allocate_task_memory(inline_task.value._internal._callback.size, alignof(u64))); |
| 949 | std::memcpy(task_callback_memory, inline_task.value._internal._callback.data.data(), inline_task.value._internal._callback.size); |
| 950 | |
| 951 | // Allocate and copy attachments into smaller memory section |
| 952 | usize const attachment_count = inline_task.value._internal._attachments.size(); |
| 953 | auto attachments = std::span{reinterpret_cast<TaskAttachmentInfo *>(allocate_task_memory(sizeof(TaskAttachmentInfo) * attachment_count, alignof(TaskAttachmentInfo))), attachment_count}; |
| 954 | std::memcpy(attachments.data(), inline_task.value._internal._attachments.data(), sizeof(TaskAttachmentInfo) * attachments.size()); |
| 955 | |
| 956 | u32 asb_size = detail::get_asb_size_and_alignment(attachments).size; |
| 957 | u32 asb_align = detail::get_asb_size_and_alignment(attachments).alignment; |
| 958 | TaskType task_type = inline_task.value._internal._task_type; |
| 959 | std::string_view name = inline_task.value._internal._name; |
| 960 | add_task( |
| 961 | task_callback, task_callback_memory, |
| 962 | attachments, asb_size, asb_align, task_type, name, inline_task.value._internal._queue); |
| 963 | } |
| 964 | |
| 965 | DAXA_EXPORT_CXX void submit(TaskSubmitInfo const & info); |
| 966 | DAXA_EXPORT_CXX void present(TaskPresentInfo const & info); |
nothing calls this directly
no test coverage detected