| 852 | } |
| 853 | |
| 854 | vulkan_command_block::vulkan_command_block(const vulkan_queue& vk_queue_, const char* name, bool& error_signal_, const bool is_blocking_, |
| 855 | vector<vulkan_queue::wait_fence_t>&& wait_fences_, vector<vulkan_queue::signal_fence_t>&& signal_fences_) : |
| 856 | vk_queue(vk_queue_), error_signal(error_signal_), is_blocking(is_blocking_), |
| 857 | wait_fences(std::move(wait_fences_)), signal_fences(std::move(signal_fences_)) { |
| 858 | // create new command buffer + begin |
| 859 | cmd_buffer = vk_queue.make_command_buffer(name); |
| 860 | const VkCommandBufferBeginInfo begin_info { |
| 861 | .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, |
| 862 | .pNext = nullptr, |
| 863 | .flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, |
| 864 | .pInheritanceInfo = nullptr, |
| 865 | }; |
| 866 | VK_CALL_ERR_EXEC(vkBeginCommandBuffer(cmd_buffer.cmd_buffer, &begin_info), |
| 867 | "failed to begin command buffer", |
| 868 | { error_signal = true; return; }) |
| 869 | |
| 870 | #if defined(FLOOR_DEBUG) |
| 871 | ((const vulkan_compute*)vk_queue.get_device().context)->vulkan_begin_cmd_debug_label(cmd_buffer.cmd_buffer, name); |
| 872 | #endif |
| 873 | |
| 874 | // done |
| 875 | valid = true; |
| 876 | } |
| 877 | |
| 878 | vulkan_command_block::~vulkan_command_block() { |
| 879 | if (!valid || !cmd_buffer.cmd_buffer) { |
nothing calls this directly
no test coverage detected