diff options
author | Frederico Linhares <fred@linhares.blue> | 2024-12-31 12:32:36 -0300 |
---|---|---|
committer | Frederico Linhares <fred@linhares.blue> | 2024-12-31 19:03:51 -0300 |
commit | 736637680ac7b2cd0d0b878401a7e044fde0ee6a (patch) | |
tree | bf4feaf3f3f0e48207bf7a31ad8bcbff0f244091 /src/blucat/queue.hpp | |
parent | 083e64da1d4b5b68579288bc1690ca90d3f0a2c0 (diff) |
Diffstat (limited to 'src/blucat/queue.hpp')
-rw-r--r-- | src/blucat/queue.hpp | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/src/blucat/queue.hpp b/src/blucat/queue.hpp deleted file mode 100644 index 3be1a94..0000000 --- a/src/blucat/queue.hpp +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2022-2024 Frederico de Oliveira Linhares - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef CANDY_GEAR_BLUCAT_QUEUE_H -#define CANDY_GEAR_BLUCAT_QUEUE_H 1 - -#include "vulkan.hpp" - -namespace BluCat -{ -class QueueFamily; - -struct Queue -{ - friend class BluCat::QueueFamily; - - Queue(const Queue &t) = delete; - Queue& operator=(const Queue &t) = delete; - - VkQueue queue; - - template<typename T> - void submit_one_time_command( - const VkCommandBuffer vk_command_buffer, T commands); - - Queue(Queue &&that); - Queue& operator=(Queue &&that); - - ~Queue(); - -private: - BluCat::QueueFamily *queue_family; - int queue_index; - - Queue(BluCat::QueueFamily *queue_family, VkQueue queue, int queue_index); -}; - -template<typename T> void -Queue::submit_one_time_command( - const VkCommandBuffer vk_command_buffer, T commands) -{ - VkCommandBufferBeginInfo buffer_begin_info{}; - buffer_begin_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - buffer_begin_info.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; - - vkBeginCommandBuffer(vk_command_buffer, &buffer_begin_info); - - commands(); - - vkEndCommandBuffer(vk_command_buffer); - - VkSubmitInfo submit_info{}; - submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; - submit_info.pNext = nullptr; - submit_info.waitSemaphoreCount = 0; - submit_info.pWaitSemaphores = nullptr; - submit_info.pWaitDstStageMask = nullptr; - submit_info.commandBufferCount = 1; - submit_info.pCommandBuffers = &vk_command_buffer; - submit_info.signalSemaphoreCount = 0; - submit_info.pSignalSemaphores = nullptr; - - vkQueueSubmit(this->queue, 1, &submit_info, VK_NULL_HANDLE); - vkQueueWaitIdle(this->queue); -} - -} - -#endif /* CANDY_GEAR_BLUCAT_QUEUE_H */ |